﻿#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>
//3.使⽤C语⾔写⼀个程序打印100~200之间的素数，数字中间使⽤空格分割。
//int main()
//{
//	int i = 0;
//	for (i = 101;i <= 200;i += 2)
//	{
//		int j = 0;
//		int flag = 1;
//		for (j = 2;j < i;j++)
//		{
//			if (i % j == 0)
//			{
//				flag = 0;
//				break;
//			}
//			
//		}
//		if(flag==1)
//			printf("%d ", i);
//	}
//	return 0;
//}


//5.输⼊2个整数m和n，计算m和n的最⼤公约数，并打印出结果。


//int main()
//{
//	int m = 0;
//	int n = 0;
//	scanf("%d %d", &m, &n);
//	int k = m > n ? m : n;
//	while (1)
//	{
//		
//		if (m % k == 0 && n % k == 0)
//		{
//			break;
//		}
//		k--;
//		
//	}
//	printf("%d", k);
//	return 0;
//}

//从用户输入中读取10个整数并存储在一个数组中。然后，计算并输出这些整数的平均值。
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int sum = 0;
//	int i = 0;
//	for (i = 0;i < 10;i++)
//	{
//		sum += arr[i];
//	}
//	double avg = sum / 10.0;
//	printf("%lf\n",avg );
//}
//

//将数组A中的内容和数组B中的内容进行交换。（数组一样大）

//int main()
//{
//	int arr1[10] = { 1,2,3,4,5,6,7,8,9,0 };
//	int arr2[10] = { 21,22,23,24,52,26,27,82,29,20 };
//	int tmp = 0;
//	printf("打印前\n");
//	for (int i = 0;i < 10;i++)
//	{
//		printf("%d ", arr1[i]);
//	}
//	printf("\n");
//	for (int i = 0;i < 10;i++)
//	{
//		printf("%d ", arr2[i]);
//	}
//
//	printf("\n");
//	for (int i = 0;i < 10;i++)
//	{
//		tmp = arr1[i];
//		arr1[i] = arr2[i];
//		arr2[i] = tmp;
//	}
//	printf("转换后\n");
//	for (int i = 0;i < 10;i++)
//	{
//		printf("%d ", arr1[i]);
//	}
//	printf("\n");
//	for (int i = 0;i < 10;i++)
//	{
//	
//		printf("%d ", arr2[i]);
//	}
//	printf("\n");
//	return 0;
//}


//乘法表
//int main()
//{
//	int i = 0;
//	for (i = 1;i <= 9;i++)
//	{
//		int j = 0;
//		for (j = 1;j <= i;j++)
//		{
//			printf("%d*%d=%d ", j, i, i * j);
//		}
//		printf("\n");
//	}
//	return 0;
// }



int main()
{
	int i = 0;
	int j = 0;
	int k = 0;
	scanf("%d", &k);
	for (i = 1;i <= k;i++)
	{
		for (j = 1;j <= i;j++)
		{
			printf("%d*%d=%d ", j, i, k);
		}
		printf("\n");
	}
	return 0;
}